package cn.wolfcode.trip.api.controller;

import cn.wolfcode.trip.base.domain.Collect;
import cn.wolfcode.trip.base.domain.Travel;
import cn.wolfcode.trip.base.query.CollecQueryObject;
import cn.wolfcode.trip.base.query.QueryObject;
import cn.wolfcode.trip.base.service.*;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author pengq
 */
@RestController
@RequestMapping("/collects")
public class CollectionController {
    @Autowired
    private ICollectService collectionService;
    @Autowired
    private ITravelService travelService;
    @Autowired
    private IStrategyDetailService strategyDetailService;
    @Autowired
    private INewsPageService newsPageService;
    @Autowired
    private IStrategyService strategyService;




    /**
     *  根据收藏状态增加收藏修改收藏数量接口
     *  1.资源 /collects
     *  2.请求方式  post
     *  3.请求参数  Collects对象
     *  4.返回结果  无返回
     **/
    @PostMapping
    public Integer saveOrUpdate(Collect collect){
        Integer integer = collectionService.saveOrUpdate(collect);
        return integer;
    }

    /**
     *  根据用户id内容对象id获取收藏对象
     *  1.资源 /collects
     *  2.请求方式  get
     *  3.请求参数  当前用户id,内容对象id
     *  4.返回结果  Collect对象
     **/
    @GetMapping
    public Collect selectByUserId(Collect collect){
        return collectionService.selectByUserId(collect.getUser().getId(),collect.getCollectId());
    }

    /**
     *  根据内容类型，用户id,内容对象id查询收藏状态
     *  1.资源 /collects/state
     *  2.请求方式  get
     *  3.请求参数  Collects对象
     *  4.返回结果  Collect对象
     **/
    @GetMapping("/state")
    public Integer selectByState(Collect collect){
        Collect collect1 = collectionService.selectByState(collect);
        if(collect1 == null){
            return 0;
        }
        return collect1.getState();
    }

    /**查询所有的内容状态（标签页：1==游记    2==攻略    3==日报）
     1.资源 /collects/type
     2.请求方式  get
     3.请求参数  无
     4.返回结果  list集合
     *
     */
    @GetMapping("/type")
    public List<Collect > getAllType(){
        return collectionService.getAllType();
    }

    /**获取当前用户所有收藏的游记
     1.资源 /collects/travel
     2.请求方式  get
     3.请求参数  collect
     4.返回结果  PageInfo
     */
    @GetMapping("/travel")
    public PageInfo getTravel(Collect collect,CollecQueryObject qo){
        PageInfo pageInfo = travelService.selectCollectTravel(collect,qo);
        return pageInfo;
    }

    /**获取当前用户所有收藏的攻略
     1.资源 /collects/comment
     2.请求方式  get
     3.请求参数  collect
     4.返回结果  PageInfo
     */
    @GetMapping("/strategy")
    public PageInfo getDetaxil(Collect collect, CollecQueryObject qo){
        PageInfo pageInfo = strategyService.selectCollectStrategy(collect,qo);
        return pageInfo;
    }

    /**获取当前用户所有收藏的日报
     1.资源 /collects//daily
     2.请求方式  get
     3.请求参数  collect
     4.返回结果  PageInfo
     */
    @GetMapping("/daily")
    public PageInfo getDaily(Collect collect, CollecQueryObject qo){
        PageInfo pageInfo = newsPageService.selectCollectDaily(collect,qo);
        return pageInfo;
    }


}
